<div class="intro-header">
  <h1>CodeChecker</h1>
  <div class="intro-about">
    CodeChecker is an analyzer tooling, defect database and viewer extension
    for the <a href="https://clang-analyzer.llvm.org/">Clang Static Analyzer</a>
    and <a href="http://clang.llvm.org/extra/clang-tidy/">Clang Tidy</a>.
  </div>
</div>

<div class="separator"></div>

<div class="blocks">
  <h2>Highlights of <a href="https://github.com/Ericsson/codechecker/releases/tag/v6.10.0" class="link">CodeChecker 6.10.0</a> release</h2>

  <div class="items">
    <div class="intro-row">
      <h3>Filter results by bug path length</h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          We are showing bug path length for each report at the
          <i>Bug overview</i> page and now it is possible to filter run results
          by bug path length on the GUI and at the command line too.
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/bug_path_length_filter.png" data-dojo-type="dojox.image.Lightbox" title="Bug path length filter">
            <img src="/images/bug_path_length_filter.png" alt="Bug path length filter" />
          </a>
        </div>
        <div class="clear example">
          <b>Examples:</b>
          <ul>
            <li>
              <span class="code">CodeChecker cmd results my_run --bug-path-length 1:4</span>
            </li>
            <li>
              <span class="code">CodeChecker cmd results my_run --bug-path-length :10</span>
            </li>
          </ul>
        </div>
      </div>
    </div>
  </div>

</div>

<div class="separator"></div>

<div class="blocks">
  <h2>Highlights of <a href="https://github.com/Ericsson/codechecker/releases/tag/v6.9.1" class="link">CodeChecker 6.9.1</a> release</h2>

  <div class="items">
    <div class="intro-row">
      <h3>Show macro definitions and notes</h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          If a bug path goes through a macro, it is impossible to understand
          the bug path, since macro definitions cannot be resolved. Now we show
          macro expansion and notes in the web UI if your Clang version
          supports it.
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/macro_expansion.png" data-dojo-type="dojox.image.Lightbox" title="Macro expansion">
            <img src="/images/macro_expansion.png" alt="Macro expansion" />
          </a>
        </div>
      </div>
    </div>
  </div>

</div>

<div class="separator"></div>

<div class="blocks">
  <h2>Highlights of <a href="https://github.com/Ericsson/codechecker/releases/tag/v6.9.0" class="link">CodeChecker 6.9.0</a> release</h2>

  <div class="items">
    <div class="intro-row">
      <h3>New detection status types</h3>
      <div class="content">
        <div class="intro-col intro-col-left">
          We added 2 new detection types:
          <ul>
            <li><b>Off</b> (<i class="customIcon detection-status-off"></i>)-
              were reported by a checker that is switched off during the
              analysis.</li>
            <li><b>Unavailable</b> (<i class="customIcon detection-status-unavailable"></i>)-
              were reported by a checker that does not exists anymore because
              it was removed or renamed.</li>
          </ul>
        </div>
      </div>
    </div>
  </div>

  <div class="items">
    <div class="intro-row">
      <h3>Disable review status change on the WEB UI</h3>
      <div class="content">
        <div class="intro-col intro-col-left">
          We can disable review status change in the web UI for each product to
          force programmers to use inline source code comments.
        </div>
      </div>
    </div>
  </div>

</div>

<div class="separator"></div>

<div class="blocks">
  <h2>Highlights of <a href="https://github.com/Ericsson/codechecker/releases/tag/v6.8.0" class="link">CodeChecker 6.8.0</a> release</h2>

  <div class="items">
    <div class="intro-row">
      <h3>Filter results by report hash</h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          We are showing report hash for each report at the <i>Bug overview</i>
          page and now it is possible to filter run results by report hash on
          the GUI and at the command line too.
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/report_hash_filter.png" data-dojo-type="dojox.image.Lightbox" title="Report hash filter">
            <img src="/images/report_hash_filter.png" alt="Report hash filter" />
          </a>
        </div>
        <div class="clear example">
          <b>Examples:</b>
          <ul>
            <li>
              <span class="code">CodeChecker cmd results my_run --report-hash
                7084350547fcde43061bd1390ec169a9
              </span>
            </li>
            <li>
              <span class="code">CodeChecker cmd diff -b run1 -n run2
                --unresolved --severity high medium --report-hash
                7084350547fcde43061bd1390ec169a9</span>
            </li>
          </ul>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>New filters at Checker statistics</h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          We can get statistics only for specified runs, files, checker names
          etc. using the filter bar beside the statistic tables.
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/checker_statistics.png" data-dojo-type="dojox.image.Lightbox" title="Statistics filter">
            <img src="/images/checker_statistics.png" alt="Statistics filter" />
          </a>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Delete filtered run results</h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          It is possible to remove old, unneeded filtered reports by clicking on
          the <span class="code">Remove filtered reports</span> button at the
          top of the filter bar.
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/remove_filtered_reports.png" data-dojo-type="dojox.image.Lightbox" title="Delete filtered run results">
            <img src="/images/remove_filtered_reports.png" alt="Delete filtered run results" />
          </a>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Support managing source component on the GUI</h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          Source components can be managed on the GUI at the Report filter bar
          after clicking on the pencil icon at the Source component filter. A
          pop-up window will be opened where you can add, edit or remove
          existing source components.
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/list_of_source_components.png" data-dojo-type="dojox.image.Lightbox" title="Source component UI management">
            <img src="/images/list_of_source_components.png" alt="Source component UI management" />
          </a>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Analysis Statistics</h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          For each run the CodeChecker version (used to run the analysis) and
          the static analyzer versions along with the success/failure rate of
          the analysis can be viewed.
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/analysis_statistics.png" data-dojo-type="dojox.image.Lightbox" title="Analysis Statistics">
            <img src="/images/analysis_statistics.png" alt="Analysis Statistics" />
          </a>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Fine gain control of Clang warnings</h3>
      <div class="content">
        <div class="intro-col intro-col-left">
          Compiler warnings are diagnostic messages that report constructions
          that are not inherently erroneous but that are risky or suggest there
          may have been an error. You can fine-tune which warnings to use in
          the analysis by setting the enabled and disabled flags. These flags
          should start with a capital <span class="code">W</span> or
          <span class="code">Wno-</span> prefix followed by the warning name.
          <div class="example">
            <b>Examples:</b>
            <ul>
              <li>
                <span class="code">CodeChecker analyze /path/to/build.log
                  -o /path/to/output/dir --enable Wunused
                  --disable Wno-unused-parameter
                </span>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Allow comparison of two report directories</h3>
      <div class="content">
        <div class="intro-col intro-col-left">
          Now we are able to compare two report directories the same way as
          remote runs by using CodChecker command line.
        </div>
      </div>
      <div class="clear example">
          <b>Examples:</b>
          <ul>
            <li>
              <span class="code">CodeChecker cmd diff
                -b /path/to/report_dir_base
                -n /path/to/report_dir_new --new
              </span>
            </li>
          </ul>
        </div>
    </div>

    <div class="intro-row">
      <h3>C/C++ standard auto detection</h3>
      <div class="content">
        <div class="intro-col intro-col-left">
          Detect automatically which C/C++ standard was used for compilation by
          GCC and pass the relevant option to Clang (e.g. -std=c++11). This way
          the same standard version is used during analysis as the one in the
          build system even if it wasn't set explicitly.
        </div>
      </div>
    </div>

  </div>
</div>


<div class="separator"></div>

<div class="blocks">
  <h2>Highlights of <a href="https://github.com/Ericsson/codechecker/releases/tag/v6.7.0" class="link">CodeChecker 6.7.0</a> release</h2>
  
  <div class="items">
    <div class="intro-row">
      <h3>Component filters</h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          Aministrators of a product can create new source components by
          using <span class="code">CodeChecker cmd components</span> subcommand
          which can be used to filter results by multiple file paths.<br/>
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/component_filter.png" data-dojo-type="dojox.image.Lightbox" title="Component filter">
            <img src="/images/component_filter.png" alt="Component filter" />
          </a>
        </div>
        <div class="clear example">
          <b>Examples:</b>
          <ul>
            <li>
              Create a new component: <span class="code">CodeChecker cmd
              components add -i ./my_source_component.txt --description
              "Description of my component" my_source_component_name</span>
            </li>
            <li>
              List all components: <span class="code">CodeChecker cmd components
              list</span>
            </li>
          </ul>
          For more information <a href="https://github.com/Ericsson/codechecker/blob/master/docs/user_guide.md#source-components">see</a>.
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Diff two different tagged versions of the same run</h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          It is possible to compare two different tagged versions of the same
          run not only different run names.
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/run_tag_diff.png" data-dojo-type="dojox.image.Lightbox" title="Diff two different tagged versions of the same run">
            <img src="/images/run_tag_diff.png" alt="Diff two different tagged versions of the same run" />
          </a>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Generate index.html file by using <i>PlistToHTML</i></h3>
      <div class="content">
        <div class="intro-col intro-col-left col-md-2">
          Creating an <span class="code">index.html</span> file that lists the
          found reports which links to the local html pages.<br/>
          Usage: <span class="code">CodeChecker parse ./reports -e html -o ./reports_html</span>
          For more information <a href="https://github.com/Ericsson/codechecker/blob/master/docs/usage.md#step-3">see</a>.
        </div>
        <div class="intro-col intro-col-right col-md-2">
          <a href="/images/plist_to_html_index.png" data-dojo-type="dojox.image.Lightbox" title="Generate index.html file by using PlistToHTML">
            <img src="/images/plist_to_html_index.png" alt="Generate index.html file by using PlistToHTML" />
          </a>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Separate filter options for cmd line</h3>
      <div class="content">
        <div class="intro-col intro-col-left">
          Create separate filter options for <span class="code">CodeChecker cmd
          results</span> and <span class="code">CodeChecker cmd diff</span>
          command line options to be more consistent with the UI.
          <div class="example">
            <b>Examples:</b>
            <ul>
              <li>
                <span class="code">CodeChecker cmd results my_run --severity
                    critical high medium --file "/home/username/my_project/*"</span>
              </li>
              <li>
                <span class="code">CodeChecker cmd diff -b run1 -n run2
                  --unresolved --severity high medium --review-status
                  unreviewed confirmed</span>
              </li>
            </ul>
            For more information <a href="https://github.com/Ericsson/codechecker/blob/master/docs/user_guide.md#cmd">see</a>.
          </div>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Enable passwordless token based authentication</h3>
      <div class="content">
        <div class="intro-col intro-col-left">
          Command line clients can authenticate using the username/password
          stored in the <span class="code">.codechecker.passwords.json</span>.
          It is obviously not a good idea to store passwords in text files.
          Instead of this the user is able to generate a
          token from command line, that can be used to authenticate in the name
          of his/her name.
          <div class="example">
            <b>Examples:</b>
            <ul>
              <li>
                Create a new token: <span class="code">CodeChecker cmd token new
                  --description "Description of my token"</span>
              </li>
              <li>
                List my personal access tokens: <span class="code">CodeChecker
                cmd token list</span>
              </li>
            </ul>
            For more information <a href="https://github.com/Ericsson/codechecker/blob/master/docs/authentication.md#personal-access-token">see</a>.
          </div>
        </div>
      </div>
    </div>

    <div class="intro-row">
      <h3>Consistent report counting</h3>
      <div class="content">
        <div class="intro-col intro-col-left">
          <ul>
            <li>Uniqueing is disabled at bug list view by default.</li>
            <li>
              Numbers on the Run page (<i>Number of unresolved reports</i>,
              <i>Detection status</i>) are counted without uniqueing.
            </li>
            <li>
              Set default filter set to the following values:
              <ul>
                <li>Review status: <i>Unreviewed</i>, <i>Confirmed</i></li>
                <li>Detection status: <i>New</i>, <i>Reopened</i>, <i>Unresolved</i></li>
              </ul>
            </li>
          </ul>
        </div>
      </div>
    </div>
  
  </div>
</div>
